package br.com.vti.sisp_sicrim.antigo.controller.tela;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;

import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrpp001;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe responsavel por encapsular o tratamento e as consistencias da tela Estcm001
 * 
 * @author Incode - Data: mai/2014
 * 
 */
public class Estcm001 {
	private boolean enviada = false;
	private String pagina = "/resources/antigo/jsp/Estcm001.jsp";
	private String jVersaoj;
	private String operacao;
	private String dataCorrente;
	private String horaCorrente;
	private int dtini;
	private int dtfim;
	private String jEmpresaj = "";
	private String jProgramaj;
	private String nomeClasse;
	private int[] mat0 = new int[16];
	private int[][] tra0 = new int[8][16];
	private int[] tot0 = new int[8];
	private String mensagem = "";
	private String funcao = "0";
	private String campofocus = "operacao";
	private String navegar = "";
	private Boolean temMensagem = false;
	private Result result;
	private Sessao sessao; // Classes views
	private List<Prodestcm001> lista = new ArrayList<>();
	private Prodestcm001 prodestcm001 = new Prodestcm001();

	// Classes includes
	public Estcm001() {
		inicializar(false);
	}

	public Estcm001(boolean primeiraVez, Sessao sessao) {
		this.sessao = sessao;
		inicializar(primeiraVez);
	}

	public void inicializar(boolean primeiraVez) {
		if (primeiraVez) {
			Arrays.fill(mat0, 0);
			for (int ind1 = 1; ind1 <= 7; ind1++) {
				for (int ind2 = 1; ind2 <= 15; ind2++) {
					tra0[ind1][ind2] = 0;
				}
			}
			tra0 = new int[8][16];
			Arrays.fill(tot0, 0);
			jVersaoj = "";
			operacao = "";
			dataCorrente = "";
			dtini = 0;
			dtfim = 0;
			jEmpresaj = "";
			nomeClasse = "";
			jEmpresaj = sessao.getScrg001().getWEmpresaw();
			jVersaoj = sessao.getScrg001().getWVersaow();
			jProgramaj = sessao.getScrg001().getWProgramaw();
		}
		horaCorrente = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()); // *TIMX
		dataCorrente = new SimpleDateFormat("dd/MM/yyyy").format(Calendar.getInstance().getTime()); // *DATE
	}

	public boolean receberTela(boolean primeiraVez, Result result) {
		// faz o tratamento das criticas necessarias para os dados da tela
		// recebida
		this.result = result;
		temMensagem = false;
		if (!primeiraVez) {
			return validar();
		} else {
			return true;
		}
	}

	public void enviarTela(boolean primeiraVez, Result result, String origem) {
		this.enviada = true;
		// rotina para enviar a tela
		// caso esteja setado valores para acoesFinais, executa as classes
		// correspondentes
		this.result = result;
		if (UtilBean.acoesFinais != null && !UtilBean.acoesFinais.isEmpty()) {
			UtilBean.processaAcao();
		} else {
			enviar(result, origem);
		}
	}

	public void enviar(Result result, String origem) {
		// redicionar para o jsp correspondente
		UtilBean.redireciona(pagina, result, origem);
	}

	public void enviarMensagem(String campo, String mensagem) {
		// formatar a mensagem de erro, posicionar no campo informa
		if (campo != null) {
			campofocus = campo;
		} else {
			campofocus = "";
		}
		this.mensagem = mensagem;
		temMensagem = true;
		// enviar(result, origem);
	}

	public boolean validar() {
		// validar os campos recebidos da tela
		UtilBean.funcao = this.funcao;
		ValidarOperacao();
		if (temMensagem) {
			return false;
		}
		sessao.getScrg001().setWEmpresaw(this.jEmpresaj);
		sessao.getScrg001().setWVersaow(this.jVersaoj);
		return true;
	}

	private void ValidarOperacao() {
		// Consist�ncia F00OPERACAO
		if (operacao.equals("CAD") || operacao.equals("CAD")) {
			Scrpp001 scrpp001 = new Scrpp001(result, sessao);
			scrpp001.executar(null);
		}
	}

	public String getJversaoj() {
		return jVersaoj;
	}

	public void setJversaoj(String jVersaoj) {
		this.jVersaoj = jVersaoj;
	}

	public String getOperacao() {
		return operacao;
	}

	public void setOperacao(String operacao) {
		this.operacao = operacao;
	}

	public String getjVersaoj() {
		return jVersaoj;
	}

	public void setjVersaoj(String jVersaoj) {
		this.jVersaoj = jVersaoj;
	}

	public String getDataCorrente() {
		return dataCorrente;
	}

	public void setDataCorrente(String dataCorrente) {
		this.dataCorrente = dataCorrente;
	}

	public String getjEmpresaj() {
		return jEmpresaj;
	}

	public void setjEmpresaj(String jEmpresaj) {
		this.jEmpresaj = jEmpresaj;
	}

	public int getDtini() {
		return dtini;
	}

	public void setDtini(int dtini) {
		this.dtini = dtini;
	}

	public int getDtfim() {
		return dtfim;
	}

	public void setDtfim(int dtfim) {
		this.dtfim = dtfim;
	}

	public String getJempresaj() {
		return jEmpresaj;
	}

	public void setJempresaj(String jEmpresaj) {
		this.jEmpresaj = jEmpresaj;
	}

	public String getNomeClasse() {
		return nomeClasse;
	}

	public void setNomeClasse(String nomeClasse) {
		this.nomeClasse = nomeClasse;
	}

	public int[] getMat0() {
		return mat0;
	}

	public void setMat0(int[] mat0) {
		this.mat0 = mat0;
	}

	public int[][] getTra0() {
		return tra0;
	}

	public void setTra0(int[][] tra0) {
		this.tra0 = tra0;
	}

	public int[] getTot0() {
		return tot0;
	}

	public void setTot0(int[] tot0) {
		this.tot0 = tot0;
	}

	public String getjProgramaj() {
		return jProgramaj;
	}

	public void setjProgramaj(String jProgramaj) {
		this.jProgramaj = jProgramaj;
	}

	public int getMat0(int index) {
		return mat0[index];
	}

	public void setMat0(int index, int mat0) {
		this.mat0[index] = mat0;
	}

	public int getTot0(int index) {
		return tot0[index];
	}

	public void setTot0(int index, int tot0) {
		this.tot0[index] = tot0;
	}

	public int getTra0(int index1, int index2) {
		return tra0[index1][index2];
	}

	public void setTra0(int index1, int index2, int tra0) {
		this.tra0[index1][index2] = tra0;
	}

	public String getHoraCorrente() {
		return horaCorrente;
	}

	public void setHoraCorrente(String horaCorrente) {
		this.horaCorrente = horaCorrente;
	}

	public String getFuncao() {
		return funcao;
	}

	public void setFuncao(String funcao) {
		this.funcao = funcao;
	}

	public String getCampofocus() {
		return campofocus;
	}

	public void setCampofocus(String campofocus) {
		this.campofocus = campofocus;
	}

	public String getNavegar() {
		return navegar;
	}

	public void setNavegar(String navegar) {
		this.navegar = navegar;
	}

	public String getMensagem() {
		return mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public void setMensagemSaida(String mensagem) {
		this.mensagem = mensagem;
	}

	public boolean getEnviada() {
		return this.enviada;
	}

	public void setSessao(Sessao sessao) {
		this.sessao = sessao;
	}

	public List<Prodestcm001> getLista() {
		return lista;
	}

	public void setLista(List<Prodestcm001> lista) {
		this.lista = lista;
	}

	public Prodestcm001 getProdestcm001() {
		return prodestcm001;
	}

	public void setProdestcm001(Prodestcm001 prodestcm001) {
		this.prodestcm001 = prodestcm001;
	}

}
